package com.ym.medical.domain.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.ym.base.enums.FlagEnum;
import com.ym.common.enums.UserUserTypeEnum;
import com.ym.medical.domain.entity.BankcardEntity;
import com.ym.medical.domain.entity.LabelsEntity;
import com.ym.medical.enums.CounsellingRoomCourTypeEnum;
import com.ym.medical.enums.DoctorDetailsDoctTypeEnum;
import com.ym.medical.enums.DoctorJobTitle;
import com.ym.medical.enums.HospitalLevelEnum;
import com.ym.medical.enums.UserCardTypeEnum;
import com.ym.medical.enums.UserCertStateEnum;
import com.ym.medical.enums.UserSexEnum;
import com.ym.medical.enums.UserUserStateEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import tk.mybatis.mapper.annotation.LogicDelete;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author dai
 * @create 2019-05-05 10:40
 **/

@Data
@ApiModel("医生列表信息最全")
public class DoctorDetailAllInfoVo  {

	/**
	 * 用户主键
	 */
	@ApiModelProperty("用户主键")
	private Long id;

	/**
	 * 签名ID
	 */
	@ApiModelProperty(value = "签名ID", hidden = true)
	private Long signId;

	/**
	 * 用户昵称
	 */
	@ApiModelProperty("用户昵称")
	private String nickName;


	/**
	 * 真实姓名
	 */
	@ApiModelProperty("真实姓名")
	private String realName;

	/**
	 * 手机号
	 */
	@ApiModelProperty("手机号")
	private String phoneNo;

	/**
	 * 登录密码
	 */
	@ApiModelProperty(value = "登录密码", hidden = true)
	@JsonInclude(JsonInclude.Include.NON_NULL)
	private String userPwd;

	/**
	 * 01 未知  02 男 03 女 04 保密
	 */
	@ApiModelProperty("性别,key=UserSexEnum")
	@JsonSerialize(converter = UserSexEnum.Covert.class)
	private String sex;

	/**
	 * 二维码
	 */
	@ApiModelProperty("二维码")
	private String qrCode;

	/**
	 * 联系地址
	 */
	@ApiModelProperty("联系地址")
	private String contactAddr;


	/**
	 * 身份证	1 港澳台通行证	10部队干部离休证	11工商执照	12单位证明（含公章）	13驾驶证	14学生证	2教师证	3户口本/居住证	4老人证	5组织机构代码证	6军官证	7护照	8虚拟证件	9
	 */
	@ApiModelProperty("身份证,key=UserCardTypeEnum")
	@JsonSerialize(converter = UserCardTypeEnum.Covert.class)
	private String cardType;

	/**
	 * 身份证号
	 */
	@ApiModelProperty("身份证号")
	private String cardNo;

	/**
	 * 生日
	 */
	@ApiModelProperty("生日")
	private Date birthday;

	/**
	 *
	 */
	@ApiModelProperty("邮箱")
	private String email;

	/**
	 * 账号类型
	 */
	@ApiModelProperty("账号类型,key=UserUserTypeEnum")
	@JsonSerialize(converter = UserUserTypeEnum.Covert.class)
	private String userType;

	/**
	 * 用户状态
	 */
	@ApiModelProperty("用户状态,key=UserUserStateEnum")
	@JsonSerialize(converter = UserUserStateEnum.Covert.class)
	private String userState;

	/**
	 * 身份证认证状态
	 */
	@ApiModelProperty("身份证认证状态,key=UserCertStateEnum")
	private String certState;

	/**
	 * 头像地址
	 */
	@ApiModelProperty("头像地址")
	private String headUrl;


	/**
	 * 上次登录时间
	 */
	@ApiModelProperty("上次登录时间")
	private Date lastLoginTime;

	/**
	 * 上次登录设备
	 */
	@ApiModelProperty("上次登录设备")
	private String loginDevice;

	/**
	 * 上次登录IP
	 */
	@ApiModelProperty("上次登录IP")
	private String loginIp;

	/**
	 *
	 */
	@ApiModelProperty(hidden = true)
	@JsonInclude(JsonInclude.Include.NON_NULL)
	private String salt;

	/**
	 * 创建人
	 */
	@ApiModelProperty(hidden = true)
	@JsonInclude(JsonInclude.Include.NON_NULL)
	private Long creater;

	/**
	 * 创建时间
	 */
	@ApiModelProperty(hidden = true)
	@JsonInclude(JsonInclude.Include.NON_NULL)
	private Date createTime;

	/**
	 * 修改人
	 */
	@ApiModelProperty(hidden = true)
	@JsonInclude(JsonInclude.Include.NON_NULL)
	private Long modifier;

	/**
	 * 修改时间
	 */
	@ApiModelProperty(hidden = true)
	@JsonInclude(JsonInclude.Include.NON_NULL)
	private Date modifyTime;

	/**
	 * 性别值
	 */
	@ApiModelProperty("性别值")
	private String sexName;

	/**
	 * 用户类型值
	 */
	@ApiModelProperty("用户类型值")
	private String userTypeName;

	/**
	 * 用户状态值
	 */
	@ApiModelProperty("用户状态值")
	private String userStateName;

	/**
	 * 认证状态值
	 */
	@ApiModelProperty("认证状态值")
	private String certStateName;

	/**
	 * 身份证值
	 */
	@ApiModelProperty("身份证值")
	private String cardTypeName;

	/**
	 * 医生ID
	 */
	@ApiModelProperty("医生ID")
	private Long userId;
	/**
	 * 医生图片
	 */
	@ApiModelProperty("医生照片")
	private String doctPhotoUrl;

	/**
	 * 医生科室
	 */
	@ApiModelProperty("医生科室")
	private String deptName;
	/**
	 * 医生职称分类
	 */
	@ApiModelProperty("医生职称分类")
	@JsonSerialize(converter = DoctorJobTitle.Covert.class)
	private String titleType;

	/**
	 * 所属医院等级
	 */
	@ApiModelProperty("所属医院等级")
	@JsonSerialize(converter = HospitalLevelEnum.Covert.class)
	private String hosLevel;
	/**
	 * 所属医院名称
	 */
	@ApiModelProperty("所属医院名称")
	private String hosName;

	@ApiModelProperty("医生标签")
	private List<LabelsEntity> labels;

	@ApiModelProperty("医生擅长")
	private String goodsLabel;

	@ApiModelProperty("医生标签")
	private String patientLabel;
	/**
	 * 回答次数
	 */
	@ApiModelProperty("回答次数")
	private String num;
	/**
	 * 推荐指数
	 */
	@ApiModelProperty("推荐指数")
	private BigDecimal recommentRate;

	/*是否已关注*/
	@ApiModelProperty("是否已关注(true false)")
	private boolean attention;

	@ApiModelProperty("通讯录id")
	private Long attentionId;

	@ApiModelProperty("诊所介绍")
	private String hosDescribe;

	@ApiModelProperty("是否接诊")
	private String accept;

	@ApiModelProperty("是否接诊")
	private String acceptName;

	@ApiModelProperty("医生主键")
	private Long doctId;

	@ApiModelProperty("全/专科")
	@JsonSerialize(converter = CounsellingRoomCourTypeEnum.Covert.class)
	private String doctCategory;

	@ApiModelProperty("医生编码")
	private String doctCode;

	@ApiModelProperty("认证时间")
	private Date auditTime;

	@ApiModelProperty("职称")
	private String jobTitle;

	@ApiModelProperty("资质认证状态")
	@JsonSerialize(converter = UserCertStateEnum.Covert.class)
	private String qualificationStatus;

	@ApiModelProperty("资质认证时间")
	private Date qualificationTime;

	@ApiModelProperty("医院编码")
	private String hospitalCode;

	@ApiModelProperty("科室编码")
	private String deptCode;

	@ApiModelProperty("医学教育背景")
	private String eduBack;

	@ApiModelProperty("学术研究成果/获奖")
	private String achiAward;

	@ApiModelProperty("医生寄语")
	private String doctMessage;

	@ApiModelProperty("创建人")
	private Long creator;

	@ApiModelProperty("全/专科")
	private String doctCategoryName;

	@ApiModelProperty("职称")
	private String jobTitleName;

	@ApiModelProperty("资质认证状态")
	private String qualificationStatusName;

	@ApiModelProperty("银行卡列表")
	private List<BankcardEntity> bankcards;

	@ApiModelProperty("云信账户")
	private String yxAcc;

	@ApiModelProperty("云信密码")
	private String yxPwd;

	@ApiModelProperty("工作室名称")
	private String dsName;

	@ApiModelProperty("医院省份")
	private String hosProv;

	@ApiModelProperty("医院城市")
	private String hosCity;

	@ApiModelProperty("医院区域")
	private String hosArea;

	@ApiModelProperty("从业年限")
	private String workYear;

	/**
	 * 标准科室编码
	 */
	@ApiModelProperty("标准科室编码")
	private String deptCodeStand;

	/**
	 * 删除标志
	 */
	@ApiModelProperty("删除标志")
	@JsonSerialize(converter = FlagEnum.Covert.class)
	@LogicDelete
	private String deleted;

	/**
	 * 留言内容
	 */
	@ApiModelProperty("留言内容")
	private String spMessage;

	/**
	 * 自动留言(00否01是)
	 */
	@ApiModelProperty("自动留言(00否01是)")
	@JsonSerialize(converter = FlagEnum.Covert.class)
	private String isAutoReply;

	/**
	 * 医生类别 A/B/C/D/E
	 */
	@ApiModelProperty("医生类别 A/B/C/D/E")
	@JsonSerialize(converter = DoctorDetailsDoctTypeEnum.Covert.class)
	private String doctType;

	/**
	 * 从业时间
	 */
	@ApiModelProperty("从业时间")
	private Date workTime;

	/**
	 * 门诊时间
	 */
	@ApiModelProperty("门诊时间")
	private String theTime;

	/**
	 * 擅长
	 */
	@ApiModelProperty("擅长")
	private String theGoods;

	/**
	 * 排序
	 */
	@ApiModelProperty("排序")
	private Integer sortNum;

	/**
	 * 个人介绍
	 */
	@ApiModelProperty("个人介绍")
	private String theDesc;

}
